import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RekeningtypeGUI extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	private Bank bank;
	private int pWidth = 600, pHeight = 600;
	
	private JTextField beschrijving, maandKredietRente, naam;
	private JTextField maandRente, maxKrediet, maxOverboek;
	private JLabel message;
	private JComboBox magOpnemen;
	private JButton ok, cancel;
	private JPanel p1;
	
	public RekeningtypeGUI(Bank b){
		bank = b;
		Container c = getContentPane();
		c.setLayout(new FlowLayout());

		//panels
		p1 = new JPanel();
		p1.setLayout(new GridLayout(9,2));
		c.add(p1,BorderLayout.CENTER);
		
		message = new JLabel("");
		naam = new JTextField("", 10);
		beschrijving = new JTextField("", 10);
		maandKredietRente = new JTextField("", 10);
		maandRente = new JTextField("", 10);
		magOpnemen = new JComboBox();
		magOpnemen.addItem("Ja");
		magOpnemen.addItem("Nee");
		maxKrediet = new JTextField("", 10);
		maxOverboek = new JTextField("", 10);
		ok = new JButton("Invoeren");
		cancel = new JButton("Cancel");
		
		p1.add(new JLabel("")); // spacer JLabel voor layout
		p1.add(message);
		p1.add(new JLabel("Naam:"));
		p1.add(naam);
		p1.add(new JLabel("Beschrijving:"));
		p1.add(beschrijving);
		p1.add(new JLabel("Maand krediet rente:"));
		p1.add(maandKredietRente);
		p1.add(new JLabel("Maand rente:"));
		p1.add(maandRente);
		p1.add(new JLabel("Max opnemen:"));
		p1.add(magOpnemen);
		p1.add(new JLabel("Max krediet:"));
		p1.add(maxKrediet);
		p1.add(new JLabel("Max overboeken:"));
		p1.add(maxOverboek);
		p1.add(ok);
		p1.add(cancel);
		
		ok.addActionListener(this);
		cancel.addActionListener(this);
		
		setSize(pWidth, pHeight);
		setTitle("Rekeningtype toevoegen");
	    setVisible(true);
	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == ok){
			String n = naam.getText();
			String b = beschrijving.getText();
			String mkr = maandKredietRente.getText();
			String mr = maandRente.getText();
			int mon = magOpnemen.getSelectedIndex();
			String mk = maxKrediet.getText();
			String mob = maxOverboek.getText();
			
			// check of alles ingevuld is
			boolean mo;
			if (!n.equals("") &&
					!b.equals("") &&
					!mkr.equals("") &&
					!mr.equals("") &&
					!mk.equals("") &&
					!mob.equals("") &&
					!bank.alleRekeningTypes().contains(n)){
				// toevoegen
				if (mon == 1){
					mo = true;
				} else {
					mo = false;
				}
				try {
					RekeningType rt = new RekeningType(n, Double.parseDouble(mr), Double.parseDouble(mkr), Double.parseDouble(mob), Double.parseDouble(mk), mo, b);
					bank.voegRekeningTypeToe(rt);
					message.setText("Rekeningtype toegevoegd!");
					naam.setText("");
					beschrijving.setText("");
					maandKredietRente.setText("");
					maandRente.setText("");
					maxKrediet.setText("");
					maxOverboek.setText("");
				}catch(NumberFormatException nf){
					message.setText("Geen getallen ingevuld!");
				}
			} else {
				// fout niet toevoegen
				if (n.equals("") ||
						b.equals("") ||
						mkr.equals("") ||
						mr.equals("") ||
						mk.equals("") ||
						mob.equals("")){
					message.setText("Niet alles is ingevuld!");
				}else if (bank.alleRekeningTypes().contains(n)){
					message.setText("Naam bestaat al!");
				}else {
					message.setText("Onbekende Fout!!");
				}
			}
		}else{
			dispose();
		}
		
	}

}
